#ifndef THINK_THINK_CONSOLE_COMMAND_LISTS_H
#define THINK_THINK_CONSOLE_COMMAND_LISTS_H

static char* think_console_command_lists =
	"\n"
	"// +----------------------------------------------------------------------\n"
	"// | ThinkPHP [ WE CAN DO IT JUST THINK ]\n"
	"// +----------------------------------------------------------------------\n"
	"// | Copyright (c) 2006~2015 http://thinkphp.cn All rights reserved.\n"
	"// +----------------------------------------------------------------------\n"
	"// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\n"
	"// +----------------------------------------------------------------------\n"
	"// | Author: yunwuxin <448901948@qq.com>\n"
	"// +----------------------------------------------------------------------\n"
	"\n"
	"namespace think\\console\\command;\n"
	"\n"
	"use think\\console\\Command;\n"
	"use think\\console\\Input;\n"
	"use think\\console\\Output;\n"
	"use think\\console\\input\\Argument as InputArgument;\n"
	"use think\\console\\input\\Option as InputOption;\n"
	"use think\\console\\input\\Definition as InputDefinition;\n"
	"\n"
	"class Lists extends Command\n"
	"{\n"
	"\n"
	"    /**\n"
	"     * {@inheritdoc}\n"
	"     */\n"
	"    protected function configure()\n"
	"    {\n"
	"        $this->setName(\'list\')->setDefinition($this->createDefinition())->setDescription(\'Lists commands\')->setHelp(<<<EOF\n"
	"The <info>%command.name%</info> command lists all commands:\n"
	"\n"
	"  <info>php %command.full_name%</info>\n"
	"\n"
	"You can also display the commands for a specific namespace:\n"
	"\n"
	"  <info>php %command.full_name% test</info>\n"
	"\n"
	"It\'s also possible to get raw list of commands (useful for embedding command runner):\n"
	"\n"
	"  <info>php %command.full_name% --raw</info>\n"
	"EOF\n"
	"        );\n"
	"    }\n"
	"\n"
	"    /**\n"
	"     * {@inheritdoc}\n"
	"     */\n"
	"    public function getNativeDefinition()\n"
	"    {\n"
	"        return $this->createDefinition();\n"
	"    }\n"
	"\n"
	"    /**\n"
	"     * {@inheritdoc}\n"
	"     */\n"
	"    protected function execute(Input $input, Output $output)\n"
	"    {\n"
	"        $output->describe($this->getConsole(), [\n"
	"            \'raw_text\'  => $input->getOption(\'raw\'),\n"
	"            \'namespace\' => $input->getArgument(\'namespace\'),\n"
	"        ]);\n"
	"    }\n"
	"\n"
	"    /**\n"
	"     * {@inheritdoc}\n"
	"     */\n"
	"    private function createDefinition()\n"
	"    {\n"
	"        return new InputDefinition([\n"
	"            new InputArgument(\'namespace\', InputArgument::OPTIONAL, \'The namespace name\'),\n"
	"            new InputOption(\'raw\', null, InputOption::VALUE_NONE, \'To output raw command list\')\n"
	"        ]);\n"
	"    }\n"
	"}\n"
	"\n"
;
#endif